
#include "nane/ScriptSystem/ScriptSystemImpl_.h"
#include "nane/ScriptSystem/ScriptModuleImpl_.h"
#include "nane/core/assert.h"
#include "nane/core/log.h"

namespace nane
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    ScriptSystem::Implementation::Implementation()
        : SubSystem<IScriptSystem>::Implementation("IScriptSystem")
    {

    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    ScriptSystem::Implementation::~Implementation()
    {
        
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void ScriptSystem::Implementation::Release( ScriptModule::Implementation* _scriptModuleImpl )
    {
        NANE_ASSERT_R( interface != NULL, "ScriptSystem must be initialized" );
        NANE_ASSERT_R( this == _scriptModuleImpl->creator, "ScriptModule must be valid" );

        IScriptModule* scriptModuleInterface = _scriptModuleImpl->interface;
        delete _scriptModuleImpl;
        if( scriptModuleInterface != NULL )
        {
            interface->ReleaseModule(scriptModuleInterface);
        }
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void ScriptSystem::Implementation::nane_log_impl( const char* _message )
    {
        LOG_INFO(_message);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane
